Computing systems, including hardware, software, and combinations of hardware and software, are becoming larger and more complex, in part due to the increasing demands placed on such systems as well as modern development tools permitting their creation. At the same time, competitive and other demands are resulting in shortened development cycles of such computing systems. As a result, testing of the systems before they are employed by end users has become increasingly important.
To achieve thorough yet timely testing of computing systems, automated testing has become more common. Automated testing can involve testing a computing system using a large number of different test cases. Each test case may include a unique set of parameters by which the computing system is to be tested, and/or a sequence of one or more actions to be performed in relation to the computing system. Once a thorough set of test cases has been developed, automated testing of the computing system in question can be performed largely without any human interaction.
However, a disadvantage with automated testing, as opposed to human testing, of a computing system can take long periods of time. A further disadvantage is that automated testing is typically performed in an unintelligent and routine manner based on a predefined set of rules. For example, testing of a given application may include a test case of selecting a print menu item and verifying that a print dialog window is responsively displayed. Another test case may include selecting a print options button on the print dialog window and verifying that a print options window is responsively displayed.
However, even if the former test case fails, existing automated testing tools will attempt to test the latter test case—even though it is readily apparent to human testers that if the print dialog window is not displayed, then there is no way for the print options button to be selected. It can be said, for instance, that the latter test case is dependent on the former test case, in that failure of the former test case necessarily results in failure of the latter test case. Nevertheless, existing automated testing tools do not take into account such dependencies among test cases.
Therefore, there is a need for an improved system and method for autonomic testing of a target using test cases which alleviates one or more of the above problems.